package cn.com.cifi.mars.service;

import cn.com.cifi.mars.bean.bo.returnCoefficient.ReturnCoefficientMySaleDataBO;
import cn.com.cifi.mars.bean.bo.returnCoefficient.ReturnCoefficientNosSaleDataBO;
import cn.com.cifi.mars.entity.ReturnCoefficientDetail;
import cn.com.cifi.mars.entity.SignPlanVersionSupplyDetail;
import cn.com.cifi.mars.entity.common.IdmUser;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 回款系数详情表 服务类
 * </p>
 *
 * @author JingYuanXiang
 * @since 2020-11-05
 */
public interface ReturnCoefficientDetailService extends IService<ReturnCoefficientDetail> {
    //新建回款系数详情表
    void saveDetail(String coefficientId, IdmUser user,String projectId);
    //回款系数页面展示
    List<ReturnCoefficientDetail> queryByCoefficientId(String coefficientId);
    //生成项目实际版回款系数
    void createPracticalByProjectId(String projectId);
    //生成全部实际版回款系数
    void createAllPractical();
    //新建实际版回款系数详情表
    void saveRealityDetail(String coefficientId, Map<String, Map<Integer, BigDecimal>> standardFormatsReturn, Map<String, BigDecimal> suiteRateMap, Map<String, LocalDateTime> effectiveDates, Map<String, BigDecimal> signingRateMap, Map<String, LocalDateTime> signFirstTimeMap);

    //获取项目销售取数系统
    String getProjectSaleFetchSys(String projectId);
    //获取全盘供货详情列表映射
    Map<String, List<SignPlanVersionSupplyDetail>> getSupplyDetailListMap(Map<String, List<String>> signVersionListMap);
    //获取合同月数回款金额Map(key:合同id:value:(key:月数,value:回款金额))
    Map<String, Map<Integer, BigDecimal>> getContractMonthAmountMap(ReturnCoefficientMySaleDataBO mySaleDataBO);
    //获取标准业态月数回款金额Map
    Map<String, Map<Integer, BigDecimal>> getProProductMonthAmountMap(Map<String, Map<Integer, BigDecimal>> contractMonthAmountMap, Map<String, List<String>> contractGUIDListMap);
    //获取房间月数回款金额Map
    Map<String, Map<Integer, BigDecimal>> getRoomMonthAmountMap(ReturnCoefficientNosSaleDataBO nosSaleDataBO);
    //标准业态月数回款系数Map
    Map<String, Map<Integer, BigDecimal>> getProProductMonthCoefficientMap(Map<String, Map<Integer, BigDecimal>> proProductMonthAmountMap);

}
